![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
< Palmtops: PalmGUI V3.0 |
Amiga: Jim Collas und Update der Aktivit�ten von Juni/Juli > |
![]() |
Am 30. Juni 1999 hat Allan Odgaard(IProbe, MCC_BetterString) mit der "ImageManager-Library" einen Vorschlag f�r ein OOP-System zur Dekodierung und Anzeige von Grafiken vorgestellt.
Allan Odgaard entwickelt derzeit mit IProbe einen WWW-Browser. Als er damit begann ging er davon aus, da� er sich nicht um die Dekodierung, das Dithering und die Anzeige von Grafiken k�mmern br�uchte, da daf�r die entsprechenden Datatypes existieren. Diese besitzen aber leider einige Einschr�nkungen. So lassen sich hiermit nur Grafiken anzeigen, die als Datei vorliegen. So m�ssen die Bilder zun�chst vollst�ndig �bers Netz geladen, dann als Datei abgespeichert und erst dann k�nnen sie angezeigt werden. Eine progressive(inkrementelle) Anzeige wie von Web-Browsern gewohnt ist damit nicht m�glich. So mu�te er hierf�r seine eigenen Routinen schreiben. Dieses System m�chte er nun ver�ffentlichen. Dabei m�chte er sicherstellen, da� das Design fehlerfrei ist und bittet um Reaktionen auf seinen Vorschlag.
Das System besteht aus der ImageManager-Library und zahlreichen BOOPSI-Klassen. Dies erlaubt es, anderen, weitere Klassen hinzuzuf�gen oder speziellere Unterklassen zu entwickeln. Die Objekte dieser einzelnen Klassen lassen sich miteinander verbinden. Sie bilden dadurch eine Kette, die Schritt f�r Schritt eine Bildquelle(z.B. Datei) dekodiert und sie bis zum Ziel(Rastport) zur Anzeige weiterleitet.
Buffer -> Base64Decoder -> ImageDecoder -> Scaler -> Dither -> BitMap -> RastPort
Jedes Objekt erh�lt damit die Daten in einen bestimmten Format und kann diese in einen anderen ans n�chste Objekt weitergeben.
Als Ausgangsklassen gibt es u.a. die File.class f�r Dateien, die Buffer.class f�r Daten aus dem Speicher, die Socket.class f�r Daten aus dem Netz oder die Pipe.class f�r Daten aus einer Pipe oder einfach nur ein Objekt, da� ein Testbild zur Verf�gung stellt.
Um das System zu vereinfachen gibt es die Container-Klasse, die die ben�tigte Kette zusammenstellt.
Mittels der Progress-Klasse, die einen Hook aufruft wenn Daten durch sich hindurchwandern, l��t sich der Ablauf der Daten verfolgen, ohne da� man selbst eine Unterklasse erstellen mu�.
Dieses flexible System erlaubt die m�helose, progressive Dekodierung und Darstellung von Bildern aus verschiedenen Quellen, in verschiedenen Formaten.
Bleibt die Frage, ob die Daten durch die Kette gezogen(Pull) oder geschoben(Push) werden sollen. Beim Pull w�rde das letzte Objekt der Kette solange nach Daten fragen bis das Bild komplett angezeigt ist und jedes Objekt der Kette diese Anfrage an das vorhergehende Objekt weiterleiten.
F�r Dateien oder Buffer ist dieses Modell ideal, da die Daten schon komplett vorliegen und immer nur dann angefordert werden, wenn das letzte Objekt weitere ben�tigt.
Beim Pull w�rde das erste Objekt die Daten in die Kette schicken und jedes Objekt diese ans nachfolgende weiterleiten.
Dieses Modell ist besser f�r aus Netzen stammenden Daten geeignet, da diese schubweise aus dem Netz kommen.
Wer Ideen und Vorschl�ge f�r dieses System hat oder es einfach nur gut findet kann eine E-Mail an Allan Odgaard(Duff@DIKU.DK) mit "ImageManager.library" im Betreff schicken.
Name | : | Allan Odgaard |
Post | : | Allan Odgaard Snail: Dagmarsgade 36 2200 Copenhagen Denmark |
: | Duff@DIKU.DK | |
WWW | : | http://www.diku.dk/students/duff/ |
![]() |
< Palmtops: PalmGUI V3.0 |
Amiga: Jim Collas und Update der Aktivit�ten von Juni/Juli > |
![]() |